﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Incident_Manager_PUCP
{
    public class GestorTicket
    {
        //Angel Ramos: Implementación del Patron Singleton para el Mantenimiento de Tickets.

        //Utilizacion de arreglos para guardar en memoria los datos sin utilizar persistencia de Objetos.
        private static GestorTicket pinstancia = null;
        public List<Ticket> listaTickets = new List<Ticket>();

        public static GestorTicket ObtenerInstancia()
        {
            if (pinstancia == null)
            {
                pinstancia = new GestorTicket();
                Console.WriteLine("Se creo instancia");
            }
            else Console.WriteLine("No se creo instancia");
            return pinstancia;
        }

        public void RegistrarTicket(Ticket ticket)
        {            
            ticket.setCodigo((listaTickets.Count + 1).ToString());
            listaTickets.Add(ticket);
            Console.Write("Ticket con codigo: " + ticket.getCodigo());
        }

        public Ticket BuscarTicket(int codigo)
        {            
            Ticket ticket = listaTickets.FirstOrDefault(t => t.getCodigo().Equals(codigo));            
            return ticket;
        }

        public void EliminarTecnico(int codigo)
        {
            listaTickets.RemoveAll(t => t.getCodigo().Equals(codigo));
        }

        public void ModificarTicket(int codigo, string titulo, string descripcion, string tipo, string servicio, string prioridad, string tecnico)
        {
            listaTickets.Where(t => t.getCodigo().Equals(codigo)).ToList().
                ForEach(t =>
                            {
                                t.setTitulo(titulo);
                                t.setDescripcion(descripcion);
                                t.setTipo(tipo);
                                t.setServicio(servicio);
                                t.setPrioridad(prioridad);
                                t.setTecnico(tecnico);
                            });
        }
    }
}
